Machine-readable codes, such as barcodes and matrix barcodes, can be used to encode or represent data. These machine-readable codes can be read or scanned by specially designed optical scanners, i.e. barcode readers. Originally, machine-readable codes were limited in application due to the small amount of data that could be encoded. Further, the need for special optical scanners also limited the environments that could use machine-readable codes.
Today, technology has advanced such that machine-readable codes can be used to encode a much greater amount of information than the original linear barcodes. Further, it is now possible to use digital cameras to read barcodes. These digital cameras have become almost ubiquitous thanks in large part to the number of mobile phones that come equipped with cameras. Thus, the potential uses for machine-readable codes have also greatly increased.